package com.gxa.order.upload;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

public class UploadUtil {

    public static String uploadFile(MultipartFile multipartFile , String exts , String path){
        try {
            String fileName = multipartFile.getOriginalFilename();
            if (fileName == null){
                return null;
            }
            String exts1 = getExts(fileName);
            if (exts1==null){
                return null;
            }
//            if (exts.contains(exts1)) {
//                return null;
//            }
            //获取唯一文件名
            String newFileName = uniqueName(fileName);
            //文件抽象
            File file = new File(path, newFileName);
            //上传文件
            multipartFile.transferTo(file);
            return path+"/"+newFileName;
        } catch (IOException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        }
        return null;
    }

    private static String uniqueName(String fileName){
        if (fileName == null || fileName.isEmpty() || !fileName.contains(".")){
            return null;
        }
        //生成唯一字符串
        String uuid = UUID.randomUUID().toString();
        //生成中间没有“-”的字符串
        String replace = uuid.replace("-", "");
        //获取文件后缀
        String exts = getExts(fileName);
        //生成新的唯一的文件名
        String newFileName = replace +"."+ exts;
        //返回文件名
        return newFileName;
    }

    /**
     * 获取文件后缀
     * @param fileName
     * @return
     */
    private static String getExts(String fileName){
        //获取文件名字最后一个“.”的位置
        int index = fileName.lastIndexOf(".");
        //获取文件后缀
        String exts = fileName.substring(index);
        return exts;
    }

}
